/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.pharmproject.dao;



import br.com.pharmproject.bean.Cidade;
import br.com.pharmproject.conexao.Conexao;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author rodrigo
 */
public class CidadeDAO {
    
    Cidade cidade = null;
    List<Cidade> cidades = null;
    Statement stm = null;
    
    public CidadeDAO() {
        Conexao.getInstance();
        
        try {
            stm = Conexao.getInstance().getConector().createStatement();
            
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
        
    }
    
    public Cidade getById(int idCidade) throws SQLException, 
            ClassNotFoundException{
         cidade = new Cidade();
         
         String sql = "SELECT * FROM CIDADE cat WHERE "
                 + "cat.ID_CIDADE = ?";
         
         PreparedStatement pstm = Conexao.getInstance().getConector()
                 .prepareStatement(sql);
         pstm.setInt(1, idCidade);
         ResultSet rs = pstm.executeQuery();
         
         while(rs.next()){
             
             cidade.setIdCidade(rs.getInt("ID_CIDADE"));
             cidade.setNomeCidade(rs.getString("DESCRICAO"));
                         
         }
        
                 
         return cidade;
    }
    
    public void insert(Cidade cidade) throws ClassNotFoundException, 
            SQLException{
        
        
        String sqlUpdate = "INSERT INTO CIDADE "
              + "(NOME)" + " VALUES "
              + "(?)";
         
        PreparedStatement pstm = Conexao.getInstance()
                 .getConector().prepareStatement(sqlUpdate);
        pstm.setString(1, cidade.getNomeCidade());
        

        pstm.executeUpdate(sqlUpdate);
        
    }
    
    public List<Cidade> getAll() throws SQLException{
        
        cidades = new ArrayList<Cidade>();
                
        String sql = "SELECT * FROM CIDADE";
        ResultSet rs = stm.executeQuery(sql);
        
        
        while(rs.next()){
            
            cidade = new Cidade();
           
            cidade.setIdCidade(rs.getInt("ID_CIDADE"));
            cidade.setNomeCidade(rs.getString("NOME"));
            
            cidades.add(cidade);
        }
        
        return cidades;
        
    }
    
    public void update(Cidade cidade) throws SQLException{
        
        
        String sqlUpdate = "UPDATE CIDADE set NOME = '" + cidade.getNomeCidade()
                + " WHERE ID_CLIENTE = " + cidade.getIdCidade();
        
        
        stm.executeUpdate(sqlUpdate);
               
    }
    
    public void delete(int idCidade){
        
        String sqlDelete = "DELETE FROM CIDADE WHERE ID_CIDADE = ? ";
        
        PreparedStatement pstm = null;
        ResultSet rs = null;
                
        try {
            
            pstm = Conexao.getInstance().getConector().prepareStatement(sqlDelete);
            pstm.setInt(1, idCidade);
            
            pstm.executeUpdate();
                       
            
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            Conexao.getInstance().closeConnection();
        }
        
    }
    
}
